<?php
session_start();
require_once '../model/Andamento.php';
require_once '../model/EspacoCultural.php';
class AndamentoDLO {

    private $andamentos = array();
    private static $andamentoDLO;

    private function __construct() {
    }

    /**
     * @method AndamentoDLO getInstance() para obter uma única instância do controlador
     * @return AndamentoDLO
     */
    public static function &getInstance() {
        if (!isset (self::$andamentoDLO)) {
            if (!isset ($_SESSION['andamentoDLO'])) {
                $_SESSION['andamentoDLO'] = serialize(new AndamentoDLO());
            }
            self::$andamentoDLO = unserialize($_SESSION['andamentoDLO']);
        }
        return self::$andamentoDLO;
    }

    public function cadastrar(&$texto, &$relator, &$data_hora, &$nome_espaco) {
        $espaco = &EspacoCultural::consultarByNome($nome_espaco);
        $cod_espaco = &$espaco->getCod_espaco();
        $andamento = new Andamento();
        $andamento->setTexto($texto);
        $andamento->setData_hora($data_hora);
        $andamento->setRelator($relator);
        $andamento->setEspaco(EspacoCultural::consultar($cod_espaco));
        $andamento->cadastrar();
    }

    public function &listar(&$nome_espaco) {
        $espaco = &EspacoCultural::consultarByNome($nome_espaco);
        $result = &Andamento::listar($espaco->getCod_espaco());
        $resultado = array();
        for ($i = 0; $i < sizeof($result); $i++) {
            $row = array();
            $row['cod_andamento'] = &$result[$i]->getCod_andamento();
            $row['texto'] = &$result[$i]->getTexto();
            $row['relator'] = &$result[$i]->getRelator();
            $row['data_hora'] = &$result[$i]->getData_hora();
            $resultado[$i] = &$row;
            unset ($row);
        }
        return $resultado;
    }

    public function excluir(&$cod_andamento) {
        $andamento = null;
        if (isset ($this->andamentos[$cod_andamento])) {
            $andamento = &$this->andamentos[$cod_andamento];
        } else {
            $andamento = &Andamento::consultar($cod_andamento);
            $this->andamentos[$cod_andamento] = &$andamento;
            $_SESSION['andamentoDLO'] = serialize($this);
        }
        $andamento = &$this->andamentos[$cod_andamento];
        $andamento->excluir();
        unset ($this->andamentos[$cod_andamento]);
        $_SESSION['andamentoDLO'] = serialize($this);
    }

    public function alterar(&$cod_andamento, &$campo_id, &$campo_valor) {
        $andamento = null;
        if (isset ($this->andamentos[$cod_andamento])) {
            $andamento = &$this->andamentos[$cod_andamento];
        } else {
            $andamento = &Andamento::consultar($cod_andamento);
            $this->andamentos[$cod_andamento] = &$andamento;
            $_SESSION['andamentoDLO'] = serialize($this);
        }
        $andamento->alterarCampo($campo_id, $campo_valor);
        $this->andamentos[$cod_andamento] = &$andamento;
        $_SESSION['andamentoDLO'] = serialize($this);
    }
}
?>